/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package uy.edu.ort.arqsw.servicios;

import java.io.IOException;
import java.util.ArrayList;
import javax.ejb.EJB;
import javax.ejb.EJBTransactionRolledbackException;
import javax.ejb.Stateless;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import org.jdom2.JDOMException;
import uy.edu.ort.arqsw.domino.EntradaBlog;
import uy.edu.ort.arqsw.domino.PaginaWeb;
import uy.edu.ort.arqsw.util.UtilXML;

/**
 *
 * @author Victor
 */
@WebService(serviceName = "GestionContenidoWS")
@Stateless()
public class GestionContenidoWS {
    @EJB
    EntradaBlogFacadeLocal entradablogEJB;
    @EJB
    PaginaWebFacadeLocal paginawebEJB;
    
    /**
     * Web service operation
     */
    @WebMethod(operationName = "crearEntradaBlog")
    public String crearEntradaBlog(@WebParam(name = "strEntradaBlog") String strEntradaBlog) {
        ResultadoEntradasBlog res = new ResultadoEntradasBlog();
                
        try {
            EntradaBlog entradablog = UtilXML.parseEntradaBlog(strEntradaBlog);
            entradablog.setId(Long.MIN_VALUE);
            entradablogEJB.crear(entradablog);

            res.setResultadoCorrecto(true);
            res.setDescripcion("OK");
            res.getResultado().add(entradablog);
        } catch (EJBTransactionRolledbackException ex) {
            res.setResultadoCorrecto(false);
            res.setDescripcion("Error al insertar en la BD");
        } catch (Throwable ex) {
            res.setResultadoCorrecto(false);
            if (ex.getMessage() == null) {
                res.setDescripcion(ex.toString());
            } else {
                res.setDescripcion(ex.getMessage());
            }
        }

        return UtilXML.parseResultadoEntradaBlog(res);
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "crearPaginaWeb")
    public String crearPaginaWeb(@WebParam(name = "strPaginaWeb") String strPaginaWeb) {
        ResultadoPaginasWeb res = new ResultadoPaginasWeb();
        
        try {
            PaginaWeb paginaweb = UtilXML.parsePaginaWeb(strPaginaWeb);
            paginaweb.setId(Long.MIN_VALUE);
            paginawebEJB.crear(paginaweb);

            res.setResultadoCorrecto(true);
            res.setDescripcion("OK");
            res.getResultado().add(paginaweb);
        } catch (Throwable ex) {
            res.setResultadoCorrecto(false);
            res.setDescripcion(ex.getMessage());            
        } 

        return UtilXML.parseResultadoPaginaWeb(res);
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "removerEntradaBlog")
    public String removerEntradaBlog(@WebParam(name = "strEntradaBlog") String strEntradaBlog) {
        ResultadoEntradasBlog res = new ResultadoEntradasBlog();
        
        try {
            EntradaBlog entradablog = UtilXML.parseEntradaBlog(strEntradaBlog);
            entradablogEJB.remover(entradablog);

            res.setResultadoCorrecto(true);
            res.setDescripcion("OK");
            res.getResultado().add(entradablog);
        } catch (Throwable ex) {
            res.setResultadoCorrecto(false);
            res.setDescripcion(ex.getMessage());
        }

        return UtilXML.parseResultadoEntradaBlog(res);
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "removerPaginaWeb")
    public String removerPaginaWeb(@WebParam(name = "strPaginaWeb") String strPaginaWeb) {
        ResultadoPaginasWeb res = new ResultadoPaginasWeb();
        
        
        try {
            PaginaWeb paginaweb = UtilXML.parsePaginaWeb(strPaginaWeb);
            paginawebEJB.remover(paginaweb);

            res.setResultadoCorrecto(true);
            res.setDescripcion("OK");
            res.getResultado().add(paginaweb);
        } catch (Throwable ex) {
            res.setResultadoCorrecto(false);
            res.setDescripcion(ex.getMessage());
        }

        return UtilXML.parseResultadoPaginaWeb(res);
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "editarEntradaBlog")
    public String editarEntradaBlog(@WebParam(name = "strEntradaBlogOriginal") String strEntradaBlogOriginal, 
                                    @WebParam(name = "strEntradaBlogModificada") String strEntradaBlogModificada) {
        ResultadoEntradasBlog res = new ResultadoEntradasBlog();
        
        try {
            EntradaBlog entradablogoriginal = UtilXML.parseEntradaBlog(strEntradaBlogOriginal);
            EntradaBlog entradablogmodificada = UtilXML.parseEntradaBlog(strEntradaBlogModificada);
            entradablogEJB.editar(entradablogoriginal, entradablogmodificada);

            res.setResultadoCorrecto(true);
            res.setDescripcion("OK");
            res.getResultado().add(entradablogmodificada);
        } catch (Throwable ex) {
            res.setResultadoCorrecto(false);
            res.setDescripcion(ex.getMessage());
        }

        return UtilXML.parseResultadoEntradaBlog(res);
    }

    /**
     * Web service operation
     */
    @WebMethod(operationName = "editarPaginaWeb")
    public String editarPaginaWeb(@WebParam(name = "strPaginaWebOriginal") String strPaginaWebOriginal,
                                  @WebParam(name = "strPaginaWebModificada") String strPaginaWebModificada) {
        ResultadoPaginasWeb res = new ResultadoPaginasWeb();
        
        try {
            PaginaWeb paginaweboriginal = UtilXML.parsePaginaWeb(strPaginaWebOriginal);
            PaginaWeb paginawebmodificada = UtilXML.parsePaginaWeb(strPaginaWebModificada);
            
            paginawebEJB.editar(paginaweboriginal, paginawebmodificada);

            res.setResultadoCorrecto(true);
            res.setDescripcion("OK");
            res.getResultado().add(paginawebmodificada);
        } catch (Throwable ex) {
            res.setResultadoCorrecto(false);
            res.setDescripcion(ex.getMessage());
        }

        return UtilXML.parseResultadoPaginaWeb(res);
    }
}
